/*
 * Capacitor.java
 *
 * Created on 11 de julio de 2007, 03:11 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package core;

import exceptions.*;

/**
 *
 * @author juancho
 */
public class Capacitor {
    
    private Valor valores[];
    /** Creates a new instance of Capacitor */
    public Capacitor(Valor... valores) throws Exception{
         if(valores.length > 4 ) throw new Exception("Valor fuera de rango");  
        this.valores = new Valor[4];
        for(int x = 0; x < this.valores.length; x++)
            this.valores[x] = valores[x];
    }
    
    public void setValor(int p, Valor val) {
        valores[p - 1] = val;
    }
    
    public Valor[] getValor(){
        return valores;
    }
    
    public int getValor( int p, String n ) throws ValoresException{
        if ( p == 1 || p == 2  ){
            if ( n.equals("0") ) return 0;
            if ( n.equals("1") ) return 1;
            if ( n.equals("2") ) return 2;
            if ( n.equals("3") ) return 3;
            if ( n.equals("4") ) return 4;
            if ( n.equals("5") ) return 5;
            if ( n.equals("6") ) return 6;
            if ( n.equals("7") ) return 7;
            if ( n.equals("8") ) return 8;
            if ( n.equals("9") ) return 9;
            else throw new ValoresException("No existe ese valor");
        } else if ( p == 3 ){
            if ( n.equals("1") ) return 1;
            if ( n.equals("2") ) return 10;
            if ( n.equals("3") ) return 100;
            if ( n.equals("4") ) return 1000;
            if ( n.equals("5") ) return 10000;
            if ( n.equals("6") ) return 100000;
            if ( n.equals("7") ) return 1000000;
            if ( n.equals("8") ) return 10000000;
            if ( n.equals("9") ) return 100000000;
        } 
        else if ( p == 4 ) {
            if ( n.equals("F") ) return 1;
            if ( n.equals("G") ) return 2;
            if ( n.equals("H") ) return 3;
            if ( n.equals("J") ) return 5;
            if ( n.equals("K") ) return 10;
            if ( n.equals("M") ) return 20;
            if ( n.equals("S") ) return 50;
            if ( n.equals("Z") ) return 80;
            if ( n.equals("P") ) return 100;
            else throw new ValoresException("No existe esa tolerancia");
        }
        throw new ValoresException("No existe ese valor");
    }
    
    public int getTolerancia(){
        return this.valores[3].getValor();
    }
    
    public int obtenerTotal(){
        String valt1 = new String();
        String valt2 = new String();
        String sval;
        
        Valor val1 = this.valores[0];
        Valor val2 = this.valores[1];
        Valor mult = this.valores[2];
        
        int valor1 = val1.getValor();
        int valor2 = val2.getValor();
        int multi = mult.getValor();
        
        /*Concatenar las cadenas, cambiarlas de nuevo por int y regresar el valor total*/
        sval = valt1.valueOf(valor1) + valt2.valueOf(valor2);
        int valor = Integer.parseInt(sval);
        return valor * multi;
    }
}
